home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 316 / libsrc / ioctl.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-10-20  |  1.9 KB  |  90 lines

  1. /*
  2.  *        Cross Development System for Atari ST 
  3.  *     Copyright (c) 1988, Memorial University of Newfoundland
  4.  *
  5.  *  A simple hack for ioctl - note that some fields of the structures are not
  6.  * filled in.
  7.  *
  8.  * $Header: ioctl.c,v 1.1 88/02/03 22:58:56 m68k Exp $
  9.  *
  10.  * $Log:    ioctl.c,v $
  11.  * Revision 1.1  88/02/03  22:58:56  m68k
  12.  * Initial revision
  13.  * 
  14.  */
  15. #include    <ioctl.h>
  16. #include    <errno.h>
  17. #include    "tchars.h"
  18.  
  19. int
  20. ioctl(fd, func, arg)
  21.     int    fd;
  22.     int    func;
  23.     char    *arg;
  24. {
  25.     struct sgttyb    *sg;
  26.     struct tchars    *tc;
  27.     struct ltchars    *ltc;
  28.  
  29.     if (!isatty(fd)) {
  30.         errno = ENOTTY;
  31.         return -1;
  32.     }
  33.     switch (func) {
  34.     case TIOCGETP:
  35.         sg = (struct sgttyb *) arg;
  36.         sg->sg_ispeed = sg->sg_ospeed = B4800;
  37.         sg->sg_erase = __tchars[TC_ERASE];
  38.         sg->sg_kill = __tchars[TC_KILL];
  39.         sg->sg_flags = __ttymode;
  40.         break;
  41.  
  42.     case TIOCSETP:
  43.         sg = (struct sgttyb *) arg;
  44.         __tchars[TC_ERASE] = sg->sg_erase;
  45.         __tchars[TC_KILL] = sg->sg_kill;
  46.         __ttymode = sg->sg_flags;
  47.         break;
  48.  
  49.     case TIOCGETC:
  50.         tc = (struct tchars *) arg;
  51.         tc->t_intrc = __tchars[TC_INTRC];
  52.         tc->t_quitc = __tchars[TC_QUITC];
  53.         tc->t_startc = TC_UNDEF;
  54.         tc->t_stopc = TC_UNDEF;
  55.         tc->t_eofc = __tchars[TC_EOFC];
  56.         tc->t_brkc = __tchars[TC_BRKC];
  57.         break;
  58.  
  59.     case TIOCSETC:
  60.         tc = (struct tchars *) arg;
  61.         __tchars[TC_INTRC] = tc->t_intrc;
  62.         __tchars[TC_QUITC] = tc->t_quitc;
  63.         __tchars[TC_EOFC] = tc->t_eofc;
  64.         __tchars[TC_BRKC] = tc->t_brkc;
  65.         break;
  66.  
  67.     case TIOCGLTC:
  68.         ltc = (struct ltchars *) arg;
  69.         ltc->t_suspc = TC_UNDEF;
  70.         ltc->t_dsuspc = TC_UNDEF;
  71.         ltc->t_rprntc = __tchars[TC_RPRNTC];
  72.         ltc->t_flushc = TC_UNDEF;
  73.         ltc->t_werasc = __tchars[TC_WERASC];
  74.         ltc->t_lnextc = __tchars[TC_LNEXTC];
  75.         break;
  76.  
  77.     case TIOCSLTC:
  78.         ltc = (struct ltchars *) arg;
  79.         __tchars[TC_RPRNTC] = ltc->t_rprntc;
  80.         __tchars[TC_WERASC] = ltc->t_werasc;
  81.         __tchars[TC_LNEXTC] = ltc->t_lnextc;
  82.         break;
  83.  
  84.     default:
  85.         errno = EINVAL;
  86.         return -1;
  87.     }
  88.     return 0;
  89. }
  90.